package models

import "time"

type Users struct {
	Id        uint64    `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Phone     string    `gorm:"column:phone;type:char(11);comment:手机号;not null;" json:"phone"`                                            // 手机号
	Password  string    `gorm:"column:password;type:char(36);comment:密码;not null;" json:"password"`                                       // 密码
	Username  string    `gorm:"column:username;type:varchar(20);comment:用户名;not null;" json:"username"`                                   // 用户名
	TotalNum  uint64    `gorm:"column:total_num;type:bigint UNSIGNED;comment:余额;not null;default:0;" json:"total_num"`                    // 余额
	CreatedAt time.Time `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt time.Time `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
}

func (u *Users) TableName() string {
	return "users"
}

type Doctors struct {
	Id         uint64    `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Name       string    `gorm:"column:name;type:varchar(20);comment:医生姓名;not null;" json:"name"`                                          // 医生姓名
	Phone      string    `gorm:"column:phone;type:char(11);comment:手机号;not null;" json:"phone"`                                            // 手机号
	PositionId uint64    `gorm:"column:position_id;type:bigint UNSIGNED;comment:职位;not null;default:0;" json:"position_id"`                // 职位
	Price      uint64    `gorm:"column:price;type:bigint UNSIGNED;comment:挂号费;not null;default:0;" json:"price"`                           // 挂号费
	Text       string    `gorm:"column:text;type:varchar(255);comment:简介;not null;" json:"text"`                                           // 简介
	CreatedAt  time.Time `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt  time.Time `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
}

func (d *Doctors) TableName() string {
	return "doctors"
}

type Entitys struct {
	Id      uint64 `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Name    string `gorm:"column:name;type:varchar(20);comment:机构名称;not null;" json:"name"`               // 机构名称
	Address string `gorm:"column:address;type:varchar(50);comment:地址;not null;default:0;" json:"address"` // 地址
	Phone   string `gorm:"column:phone;type:char(11);comment:联系号码;not null;" json:"phone"`                // 联系号码
	Text    string `gorm:"column:text;type:varchar(255);comment:简介;not null;" json:"text"`                // 简介
}

func (e *Entitys) TableName() string {
	return "entitys"
}

type UserDoctor struct {
	Id       uint64 `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UserId   uint64 `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;default:0;" json:"user_id"`     // 用户id
	DoctorId uint64 `gorm:"column:doctor_id;type:bigint UNSIGNED;comment:医生id;not null;default:0;" json:"doctor_id"` // 医生id
}

func (u *UserDoctor) TableName() string {
	return "user_doctor"
}

type EntityDoctor struct {
	Id       uint64 `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	EntityId uint64 `gorm:"column:entity_id;type:bigint UNSIGNED;comment:机构id;not null;default:0;" json:"entity_id"` // 机构id
	DoctorId uint64 `gorm:"column:doctor_id;type:bigint UNSIGNED;comment:医生id;not null;default:0;" json:"doctor_id"` // 医生id
}

func (e *EntityDoctor) TableName() string {
	return "entity_doctor"
}

type Orders struct {
	Id       uint64 `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Number   string `gorm:"column:number;type:varchar(255);comment:订单编号;not null;" json:"number"`                    // 订单编号
	UserId   uint64 `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;default:0;" json:"user_id"`     // 用户id
	DoctorId uint64 `gorm:"column:doctor_id;type:bigint UNSIGNED;comment:医生id;not null;default:0;" json:"doctor_id"` // 医生id
	Price    uint64 `gorm:"column:price;type:bigint UNSIGNED;comment:金额;not null;default:0;" json:"price"`           // 金额
	PayTypes string `gorm:"column:pay_types;type:enum('余额支付', '在线支付');comment:支付方式;not null;" json:"pay_types"`      // 支付方式
}

func (o *Orders) TableName() string {
	return "orders"
}
